<?php

# -- DÉBUT NOTE DE LICENCE -------------------------------------
#
# Ce fichier fait partie de Clicpage.
#
# Copyright (c) 2010 Francois (www.clicpage.net)
# Distribué selon les termes de la licence GPL version 2.0.
# Consultez le fichier LICENCE ou
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# -- FIN NOTE DE LICENCE ---------------------------------------

class cpModuleCSS extends cpModuleAdmin
{
	
	
	
	
	
	protected $themeInfos;
	protected $fichier;
	
	
	
	
	
	/// @name Initialisation
	//@{
	
	
	public function __construct($core)
	{

		parent::__construct($core); 
		
		# Permission nécessaire: apparence
		$this->core->auth->verifierPermission('apparence', true);

		# Thème        
        $this->core->chargerThemes();
        
        if(!array_key_exists($_GET['theme'], $this->core->themes)) {
        	http::redirect('index.php?module=apparence');
        }
		$this->themeInfos = $this->core->themeInfos = $this->core->themes[$_GET['theme']];
        
		# Fichier CSS
		$this->fichier = CP_CHEMIN_THEMES.'/'.$this->themeInfos['identifiant'].'/styles/custom.css';

		# Vérifier que le fichier est accessible en écriture
		try {
			if(!file_exists($this->fichier)) {
				$fp = @fopen($this->fichier,'wb');
				if ($fp === false) {
					throw new Exception();
				} 
				fclose($fp);
			} elseif(!is_writable($this->fichier)) {
				throw new Exception();
			}
		} catch(Exception $e) {
			throw new cpErreur(__('La feuille de styles de ce thème n\'est pas accessible en écriture.'), null, 401);
		}
		
		# Module d'administration
		$this->setTitreModule(sprintf(__('Éditer la feuille de styles pour le thème %s'), html::escapeHTML($this->themeInfos['nom'])));
		$this->setPrev('apparence', __('Apparence'));
		$this->ajouterBoutonAction(__('Enregistrer'), '#', 'boutonAction_enregistrer');
		
		# CSS et Javascript
		$this->setCSS('CSS');
		$this->setJavascript('CSS');
		
		$this->setActionsAutorisees('editerCSS');
		
	}
   //@}
    
	
	

	
	/// @name Formulaires
	//@{
	
	
	public function action_editerCSS()
	{		
			if($_POST['theme'] != $this->themeInfos['identifiant']) {
				throw new cpErreur(__('Action invalide'), 301);
			}
		
			file_put_contents($this->fichier, $_POST['css']);
			$this->messageOK(__('La feuille de styles a été mise à jour avec succès.'));
	}    
   //@} 
    
	

	
	
	/// @name Interface du module
	//@{
	
	
	public function interfaceModule()
	{
		
		# Récupérer le contenu du fichier CSS
		if(!file_exists($this->fichier)) {
			$css = '';
		} else {
			$css = file_get_contents($this->fichier);
		}
		
		# HTML de l'interface
		$html =
		'<form action="index.php?module=CSS&theme='.$this->themeInfos['identifiant'].'" method="post" id="formEditerCSS">'.
			$this->afficherMessages().
			$this->core->nonceHTML('editerCSS').
			form::hidden('action', 'editerCSS').
			form::hidden('theme', $this->themeInfos['identifiant']).
			'<fieldset id="editer-css">'.
				'<legend>custom.css</legend>'.
				$this->textarea('css', 30, 30, html::escapeHTML($css)).
			'</fieldset>'.
			'<fieldset id="selecteur-couleur">'.
				'<legend>'.__('Sélecteur de couleur').'</legend>'.
				'<p id="colorpicker"></p>'.
			'</fieldset>'.
		'</form>';

		return $html;
				
	}
	//@}
	
	
}

?>